/**
 *
 * 多态成员变量调用
 * 编译看左边 运行也看左边
 * 理解:
 * 1.new一个对象 如果该对象存在父类 则会在地址中根据父类数量开辟等数量的内存空间
 *
 * 多态成员方法调用
 * 编译看左边 运行看右边
 *
 * 多态的优势
 * 1.在多态形式下,右边的对象可以实现解耦,便于拓展和维护
 *
 * 引用数据类型的转换有几种方式
 * 1.自动类型转换
 * Person p = new Student() //就是自动类型转换 把子类转为父类类型
 *
 * 2.强制类型转换
 * Person p = new Student()
 * Studnet s = (Student) p //转为真正的子类类型调用子类方法
 *
 * 3.转换类型不一致会报错
 *
 * 4.instanceof也能转换类型
 *
 * */